<?php 
/**
 * [简历第一阶段模型类]
 */

class Resume1Model extends Model{

	// 指定表名
	public $table = 'people_resume1';

	// ***********************************自动验证*********************************
	public $validate = array(
		array('resumename','nonull','简历名称不能为空',2,3),
		array('resumename','maxlen:20','简历名称不能超过20个字符',2,3),
		// array('validtime','num:0,365','简历有效期为0-365天',2,3),
		// array('realname','nonull','真实姓名不能为空',2,3),
		// array('realname','minlen:2','真实姓名不能少于2个字符',2,3),
		// array('realname','maxlen:10','真实姓名不能超过10个字符',2,3),
		// array('sex','num:1,2','性别选择不正确',2,3),
		// array('age','nonull','请填写您的真实年龄',2,3),
		// array('age','num:18,70','年龄范围在18-70岁之间',2,3),
		// array('height','num:120,220','身高范围在120-220之间',3,3),
		// array('marrystate','num:1,3','婚姻选择不正确',2,3),
		// array('workyear','num:1,6','请选择您的工作经验时间',2,3),
		// array('household','nonull','通讯地址不能为空',2,3),
		// array('household','minlen:2','户口所在地长度不能少于2个字符',2,3),
		// array('household','maxlen:150','户口所在地长度不能超过150个字符',2,3),
		// array('edu','num:1,9','请选择您的学历',2,3),
		// array('phonenumber','nonull','联系电话号码不能为空',2,3),
		// array('phonenumber','phone','请填写正确的联系电话号码',2,3),
		// array('mail','nonull','电子邮箱不能为空',2,3),
		// array('mail','email','请填写正确的电子邮箱',2,3),
		// array('address','nonull','通讯地址不能为空',2,3),
		// array('address','minlen:2','通讯地址长度不能少于2个字符',2,3),
		// array('address','maxlen:150','通讯地址长度不能超过150个字符',2,3),
		// array('qq','regexp:/^[1-9]\d{4,10}$/','请填写4-10位的QQ号码',3,3),
		// array('homepage','http','请填写的正确的个人主页/博客地址',3,3),
		);



	// ***********************************自动完成*********************************
	public $auto = array(
		array('user_uid','_uid','method',2,1),
		array('sendtime','_sendtime','method',2,1),
		array('endtime','_endtime','method',2,3),
		array('freshtime','_freshtime','method',2,1),
		array('validtime','_validtime','method',2,3)
		);

	/**
	 * [所属用户uid]
	 */
	public function _uid(){
		return session('uid');
	}

	/**
	 * [发表时间]
	 */
	public function _sendtime(){
		return time();
	}

	/**
	 * [结束时间]
	 */
	public function _endtime(){
		// 接收用户设定的简历有效时间的值$validtime, 有效时间为天数
		$validtime = Q('post.validtime', 0, 'intval');
		// 根据在make1_update页面设置了reid的隐藏域，判断是否进入修改页面,并且提交了新的数据
		if($reid = Q('post.reid' , 0, 'intval')){
			// 查询旧的发表时间戳，和旧的有效天数
			$data = $this->where(array('reid'=>$reid))->field('sendtime , validtime')->find();
			$sendtime = $data['sendtime'];
			$oldvalidtime = $data['validtime'];
			// 返出新的结束时间戳（最早发表时间+（旧天数+新天数）*3600秒 *24小时）
			return $sendtime + ( ($oldvalidtime + $validtime) *3600 *24 );
		}
		// 返出当前时间戳+用户定义的时间天数*24小时*3600秒，得出结束的时间戳
		return time() + $validtime *24 *3600;
	}


	/**
	 * [刷新时间]
	 */
	public function _freshtime(){
		return time();
	}

	/**
	 * [修改简历有效时间]
	 */
	public function _validtime(){
		// 获得有效天数
		$validtime = Q('post.validtime', 0, 'intval');
		// 根据在make1_update页面设置了reid的隐藏域，判断是否进入修改页面,并且提交了新的数据
		if($reid = Q('post.reid', 0, 'intval')){
			// 查询旧的有效天数
			$oldvalidtime = $this->where(array('reid'=>$reid))->getField('validtime');
			// 返出新的有效天数（旧的有效天数+新的有效天数）
			return $oldvalidtime + $validtime;
		}
		return $validtime;
	}




	// ***********************************其他方法*********************************
	/**
	 * [添加数据]
	 */
	public function add_data($step){
		// 先判断该用户拥有几份简历，如果超出3份简历，就返出报错
		if($this->where(array('user_uid'=>session('uid')))->count() >= 3) return false;
		// 执行添加方法，并返回自增id
		$reid = $this->add();
		// 执行添加简历完成步骤状态
		$this->add_step($reid,$step);
		// 返出自增id
		return $reid;
	}


	/**
	 * [查询数据]
	 */
	public function have_info($reid){
		// 组合where条件，
		$where = array(
			'reid'		=>	$reid,
			'user_uid'	=>	session('uid')
			);
		// 查询该用户是否有数据
		return $this->where($where)->getField('reid');
	}


	/**
	 * [得到用户详细数据]
	 */
	public function get_info($reid){
		// 组合where条件，
		$where = array(
			'reid'		=>	$reid,
			'user_uid'	=>	session('uid')
			);
		// 查询该用户是否有数据
		return $this->where($where)->find();
	}


	/**
	 * [用户数据更新]
	 */
	public function save_info($where = NULL, $data = NULL){
		//修改的时候，如果Post数据有主键Id,那么会自动作为where条件
		$this->where($where)->save($data);
	}


	/**
	 * [检测是否是当前用户]
	 */
	public function check_user($reid){
		// 查询resume1表中的关联字段user_uid
		$uid = $this->where(array('reid'=>$reid))->getField('user_uid');
		// 检测表中的user_uid跟session中存储的用户uid是否一致，就可判断是否为当前用户
		if($uid != session('uid')) halt('非法参数');
	}


	/**
	 * [添加简历步骤完成状态]
	 */
	public function add_step($reid,$step){
		// 获得旧的完成状态的值
		$stepStat = $this->where(array('reid'=>$reid))->getField('stepstatus');
		// 组合新的状态值，连上逗号
		$stepStat .= $step . ',';
		// 重新写入到数据库中
		$this->where(array('reid'=>$reid))->save(array('stepstatus'=>$stepStat));
	}


	/**
	 * [获得简历步骤完成状态]
	 */
	public function get_step($reid){
		// 获得旧的完成状态的值
		$stepStat = $this->where(array('reid'=>$reid))->getField('stepstatus');
		// 判断该值是否存在
		if(!$stepStat) return null;
		// 返出组合好的数组,如下所示
		// Arrar(
		// 	[0]	=>	1
		// 	[1]	=>	2
		// 	)
		return explode(',', rtrim($stepStat,','));
	}
}
 ?>